package padraostate;

/**
 *
 * @author elias
 */
public class Produto {

    private int contador = 0;
    private java.util.ArrayList<Object> objetos = new java.util.ArrayList<Object>();
    private IState estado = new EstoqueEmFalta();

    private void mudarEstado(){
        if ( objetos.size() > 10 )
            estado = ( estado instanceof EstadoNormal ? estado : new EstadoNormal());
        else
            if ( objetos.size() > 0 )
                estado = ( estado instanceof EstadoCritico ? estado : new EstadoCritico());
            else
                estado = ( estado instanceof EstoqueEmFalta ? estado : new EstoqueEmFalta());
    }

    public void abater(){
        if ( estado.podeAbater() ){
            objetos.remove(objetos.size()-1);
        }
        mudarEstado();
    }

    public void incrementar(){
        if ( estado.podeIncrementar() ){
            objetos.add(contador++);
        }
        mudarEstado();
    }

    public IState estadoAtual(){
        return estado;
    }

    public int quantidade(){
        return objetos.size();
    }

}
